# -*- coding: utf-8 -*-
"""
Created on Wed Apr  8 12:14:29 2020

@author: pang
"""

import cv2
import numpy as np
import win32gui, win32ui, win32con, win32api

def grab_screen(region=None):

    # hwin = win32gui.GetDesktopWindow()
    hwin = win32gui.FindWindow(None, "MuMu模拟器12")


    # if region:
    #         left,top,x2,y2 = region
    #         width = x2 - left + 1
    #         height = y2 - top + 1
    # else:
    #     width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
    #     height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
    #     left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
    #     top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)

    left, top, right, bottom = win32gui.GetClientRect(hwin)
    width = right - left
    height = bottom - top

    hwindc = win32gui.GetWindowDC(hwin)
    srcdc = win32ui.CreateDCFromHandle(hwindc)
    memdc = srcdc.CreateCompatibleDC()
    bmp = win32ui.CreateBitmap()
    bmp.CreateCompatibleBitmap(srcdc, width, height)
    memdc.SelectObject(bmp)
    memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)
    
    signedIntsArray = bmp.GetBitmapBits(True)
    img = np.fromstring(signedIntsArray, dtype='uint8')
    img.shape = (height,width,4)

    srcdc.DeleteDC()
    memdc.DeleteDC()
    win32gui.ReleaseDC(hwin, hwindc)
    win32gui.DeleteObject(bmp.GetHandle())

    return img